//////////////////////////////////////////////////////////////

//HEADER FILE: tipos_disco.h

//PROCESO PLANIFICADOR DE DISCO

//Autor: Pablo Bergna

//////////////////////////////////////////////////////////////

#ifndef TIPOS_DISCO_H_
#define TIPOS_DISCO_H_

//**********************************************************
//**********COMIENZO DE DEFINICION DE DATOS*****************
//**********************************************************


//STRUCT DE PEDIDOS DE SECTORES DE DISCO
typedef struct td_pedido_disco{
	uint16_t id;
	uint16_t posicion;
	uint8_t rw;//tiene las constantes ESCRIBIR o LEER
}__attribute__((packed)) td_pedido_disco;

//1024 cilindros, 1 cabezal y 1024 sectores por pista
//estructura de un chs
typedef struct {
	uint16_t cylinder;
	uint8_t head;//porque hay un unico cabezal segun el enunciado
	uint16_t sector;
}__attribute__((packed)) td_chs;

//estructura del disco
typedef struct {
	char* id_disco;
	char* path;
	FILE* disco;
	uint8_t estado;
	td_chs* chs_conf;
	td_chs* current_chs;
	uint16_t rpm;
	uint8_t sector_read_speed;
	uint8_t sector_write_speed;
	uint8_t sector_spin;
	uint8_t time_btw_track;
	td_cola* cola_pedidos_entrantes;
	td_cola* cola_pedidos_salientes;
	td_lista* lista_planificacion;
	uint8_t algoritmo_planificador;//1 es con inanición y 2 sin inanicion
}__attribute__((packed)) td_disco;

//**********************************************************
//**********FIN DE DEFINICIONES DE DATOS********************
//**********************************************************

#endif /* TIPOS_DISCO_H_ */
